package
{
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;

	[Bindable]
	public class MovieItem
	{
		private static const imdbCache : Array = [];
		
		public var imdb : String = "";
		public var imdbLink : String = "";
		public var name : String = "";
		public var director : String = "";
		public var year : uint = 0;
		public var tags : String = "";
		public var quality : String = "";
		public var other : String = "";
		
		private var _data : XML;
		
		namespace entryNS = "http://www.w3.org/2005/Atom";
		
		public function get url() : String
		{
			return "http://rutracker.org/forum/" + _data.entryNS::link.@href;
		}
		
		public function MovieItem(value : XML)
		{
			_data = value;

			var regexpResult : Array = _data.entryNS::title.toString().match(/([^(]+) \(([^)]+)\)\s?\[\s?(\d+)\s*[г\.]*\s*,\s*([\sа-яА-Яё,\.\-\/]+)[,\.]?\s*([^\]]+)\](.+)/);
			
			if(regexpResult == null) 
			{
				this.name = _data.entryNS::title.toString();
				return;
			}
			
			this.name = regexpResult[1];
			this.director = regexpResult[2];
			this.year = regexpResult[3];
			this.tags = regexpResult[4];
			this.quality = regexpResult[5];
			this.other = regexpResult[6];
			
			// Кешируем запросы к imdbapi, т.к. в пределах 1 сессии они вряд ли изменятся
			var fromCache : XML = imdbCache[_data.entryNS::link];
			if(fromCache == null)
			{	
				var loader : URLLoader = new URLLoader();
				loader.addEventListener(Event.COMPLETE, processIMDBResult);
				
				// формат запроса: t - название фильма, r - формат (XML or JSON), y - год
				loader.load(new URLRequest('http://www.imdbapi.com/?t=' + (this.name.split(/\//)[1]) + '&r=xml&y=' + year));
			}
			else
			{
				imdb = fromCache.movie.@rating;
			}
		}
		
		protected function processIMDBResult(e : Event) : void
		{
			var loader : URLLoader = e.target as URLLoader;
			imdbCache[_data.link] = XML(loader.data);
			imdb = XML(loader.data).movie.@rating;
			imdbLink = "http://www.imdb.com/title/" + XML(loader.data).movie.@id + "/";
		}

	}
}